package com.jikangjun.disk.file.service;

import com.jikangjun.disk.file.entity.FileEntity;
import com.jikangjun.disk.file.entity.FileShareEntity;
import com.jikangjun.disk.file.entity.SearchFileEntity;
import com.jikangjun.disk.mybatis.entity.PtFileEntity;
import com.jikangjun.disk.mybatis.flexigrid.PagingEntity;
import com.jikangjun.disk.mybatis.flexigrid.TblResponseEntity;

import java.util.List;

public interface FileService {
    /**
     * 保存文件信息
     * @param ptFileEntityList
     */
    void saveFileInfo(List<PtFileEntity> ptFileEntityList);

    List<FileEntity> getUserFiles(String userId, String parentId);

    List<FileShareEntity> getSharedFiles(String userId);

    void createFolder(FileEntity folder);

    FileEntity getFileDetail(String fileId);



    /**
     * 分页查询文件列表
     * @param entity
     * @param paging
     * @return
     */
    TblResponseEntity<PtFileEntity> queryFileInfoListByPage(SearchFileEntity entity, PagingEntity paging);

    void copyFile(com.jikangjun.disk.file.entity.FileCopyRequest request);
    void moveFile(com.jikangjun.disk.file.entity.FileMoveRequest request);
    /**
     * 重命名文件
     */
    void renameFile(String fileId, String newName, String userId);

    /**
     * 查询所有文件列表
     * @return
     */
    List<PtFileEntity> queryFileListAll();

    /**
     * 检查文件是否存在
     * @param fileName 文件名
     * @param parentId 父目录ID
     * @return 是否存在
     */
    boolean checkFileExists(String fileName, String parentId);

    /**
     * 插入文件记录
     * @param file 文件实体
     */
    void insertFile(FileEntity file);

    /**
     * 删除文件记录
     * @param fileId 文件ID
     */
    void deleteFile(String fileId);

    /**
     * 将文件移动到回收站
     * @param fileId 文件ID
     * @param userId 用户ID
     */
    void moveToRecycle(String fileId, String userId);

    /**
     * 查询文件信息
     * @param fileUuid
     * @return
     */
    PtFileEntity queryFileInfoById(String fileUuid);
}
